package br.com.condominio.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;

import br.com.condominio.entity.Comunicado;
import br.com.condominio.service.ComunicadoService;

@ViewScoped
@ManagedBean(name = "comunicadoBean")
public class ComunicadoBean extends BaseBean {

	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{comunicadoService}")
	private ComunicadoService model;
	private Comunicado comunicado;
	private List<Comunicado> comunicados;
	private String nomeComunicado;
	private boolean editMode;

	public ComunicadoService getModel() {
		return model;
	}

	public void setModel(ComunicadoService model) {
		this.model = model;
	}

	public Comunicado getComunicado() {
		if(comunicado == null){
			comunicado = new Comunicado();
		}
		return comunicado;
	}

	public void setComunicado(Comunicado comunicado) {
		this.comunicado = comunicado;
	}

	public void salvar() {
		System.out.println("idf comunicado " + comunicado.getComuniCodigo());
		
		if (comunicado.getComuniCodigo() == null
				|| comunicado.getComuniCodigo().intValue() == 0) {
			comunicado = model.persistComunicado(comunicado);
			comunicado = new Comunicado();
			addInfoMessage("Comunicado criado com sucesso.");
		} else {
			model.updateComunicado(comunicado);
			addInfoMessage("Comunicado alterado com sucesso.");
		}
	}

	public void delete() {
		model.deleteComunicado(comunicado);
		if (nomeComunicado != null && !nomeComunicado.isEmpty()){
			comunicados = model.getComunicadosByName(nomeComunicado);
		}else{
			comunicados = model.getAllComunicados();
		}

		// return "";
	}

	public void create() {
		this.comunicado = new Comunicado();
		this.editMode = true;
	}

	public void update() {
		this.editMode = true;
	}

	public void cancel() {
		this.editMode = false;
	}

	public void filtrarComunicado(AjaxBehaviorEvent event) {
		if (nomeComunicado != null && !nomeComunicado.isEmpty()) {
			comunicados = model.getComunicadosByName(nomeComunicado);
		} else {
			comunicados = model.getAllComunicados();
		}
	}

	public List<Comunicado> getComunicados() {
		if (comunicados == null) {
			comunicados = model.getAllComunicados();
		}
		return comunicados;
	}

	public void setComunicados(List<Comunicado> comunicados) {
		this.comunicados = comunicados;
	}

	public String getNomeComunicado() {
		return nomeComunicado;
	}

	public void setNomeComunicado(String nomeComunicado) {
		this.nomeComunicado = nomeComunicado;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}

		
}
